- Version 0.17 (8.5.2001)(dc.e: really exactly 22057 lines :) , 694035 bytes):
- Added inlined PowerPC assembly (ASM/ENDASM)
- all standard mnemonics supported
- most of extended mnemonics supported
- easy usage of local/global variables directly in the assembly code
via special mnemonics (lw, sw, etc.)
- new feature TDEF for definition of custom types (like C's typedef)
- binary modules support it ofcourse too
- finally added UNIONs to binary modules!!!
- improved OBJECT support
- You can now define internal objects with OBJECT and ENDOBJECT keywords
- You can use [ and ]:name instead of OBJECT name and ENDOBJECT keywords inside the object
- Added OFFSET and RELOFS keywords and a new feature to setup the item positions in the object
- Added ALIGN keyword
- Improved unions, each can be now followed with OF keyword like the OBJECT keyword itself
- Added C alike unions
- CASE can now handle equations (CASE a+1 TO b-1,10,11)
- added support for empty arguments (like: func(,1,,3), or: [1,2,,3,,]:list)
- now prints all unused procedures
- improved AmigaE support:
- AmigaE support is enabled by '.e' extension in source name
- all variables/objects and it's items names are converted to lower case
- all constants are converted to upper case
- I can't recomend to write bigger E projects in D, but if You need it
You can switch to original AmigaE or CreativE...
- powerd.lib news
- BitSize(0) now returns 0 instead of 1
- WriteF() function added
- StrCmpNC() (case free string compare) function added
- lots of powerpc native assembly functions added
- and some less important improvements
- modules news
- graphics/gfxbase.m should work
- minor changes in handling 68k library functions in the ppc native code.
- all the modules in the dmodules: directory (not in it's subdirectories)
must now have it's own link library in d:lib/modules directory. Take a
look at new LIBGEN=LG/K cli argument, which will
generate for You all the 68k function launchers for the ppc.
- removed NOPP argument
- bug fixes
- FOR a:=0 TO -1 made one loop, fixed
- BitSize(0) now returns 0 instead of 1
- removed infinite loop when object item wasn't found
- OPT NOHEAD didn't produce executable file, only the object file
- if expressions were build only from constants and all of them were
integers, the result was computed also as an integer, also if the
destination was float (DEFD a=1/2), fixed, thanks to Maciej Po³yga!
- post and pre decrementation/incrementation can be now combined (++a--)
- definition of local constants can contain also global constants
- fixed a bug in static list definition
- fixed bug in PowerPC optimizations (blr,blr)
- fixed bug in FOR loop
- fixed problem with stack in ppc code
- fixed lots of another ppc related problems
- UNTILN now works
- compiler reports if two or more procedures with the same name appeared
- division by zero when compiling a module fixed
- sources can now end with a comment (/* */) without ending linefeed
- x[]++:=y now works (but ++x[]:=y still doesn't, sorry)
- no more error reporting, when JUMPing to a local label
- items after UNIONs has now correct offset (very long standed bug)
- binary modules containing objects was saved incorrectly (althought was working),
such modules doesn't need to be recompiler, but I recomend it :)
- GM=GENMODULE/K argument now does always correct return types
- fixed some sign extensions in functions in powerd_ppc.m module
- fixed external procedure definitions in binary modules, the binary modules
containing external procedures definitions (all in dmodules:lib) are changed
- fixed a bug in global data definition for PowerPC code
- removed optimization which caused a bug if SUB was used
- known enforcer hits removed
- and several more or less important fixes
- Version 0.16 (31.12.2000)(dc.e: really exactly 20000 lines :) , 622424 bytes):
- added currently limited PowerPC support!!!
- added quoted expressions
- improved equation generator, now creates much better and safer code
- multiple conditions are now also allowed (a
- now work stuff like a,b,c+=test() correctly
- completely changed stack usage
- added NEXTIF keyword
- new tool pc - PowerD Project Compiler v0.4, it simplifies multiple source compilation
- improved Val() and RealVal() functions
- all errors/warnings are now written also into file 't:powerd.err.log' file
- added support for multiple names per object
- highly improved static list writing routine, much more flexible
- improved some parts of documentation to be more lucid
- improved LIBRARY definition, now allows You to define also PPC functions in library
- LONG <label> now works
- new option WB added to allow to start Your proggies also from wb directly (via icon)
- added wbstartup.o
- added EXEICON option
- new SUB feature added
- added cli switch DF=DELFILES/S which enables deleting of #?.ass and #?.o files when executable file is succefuly generated
- added hash table for macro finding what improves speed of preprocessing pass upto 20 times
- added hash table for object finding what improves speed of working pass a lot
- added large data model, now is possible to compile files that produces executables longer then 32 kilos
- local constants works again
- added some new warnings and error messages
- improved multiple value returning, now doesn't require definition for longs, but warns!
- improved preprocessor comment handling, line numbers on errors should be again exact
- recursive comments works again
- item names in object's definitions can now start also with numbers
- comments in macros are now better handled/removed
- added new functions to powerd.lib
- new string functions: LoChar(), HiChar(), VStringF(), VEStringF()
- new miscelaneous functions: Double(), Float(), PutDouble(), PutFloat(), ReByte(), ReWord(), ReUByte(), ReUWord()
- new quoted expression functions: Even(), Exists(), ForAll(), MapList()
- shortest functions from powerd.lib are rewritten to be inlined
- added and improved some examples
- added support for C-like constants (ie: 0x10 or 0b110011)
- added rtgmaster.library and chunky.lib support
- chunky.lib contains several functions to work with 8/24/32bit chunky graphics
- added two examples of rtg and chunky usage
- added module cache, extreme speedup of module loading
- added dcache tool to show and/or flush the cache
- object oriented programming is temporarily removed because of many
improvements, sorry, hope it will work in 0.17
- fixed several bugs
- several bugs in inline assembly
- preprocessor's keywords didn't work, except #define
- binary module loading/saving, recursive module now works
- very old and stupid bug in RealStr() and RealEStr() functions
- BitSize() now returns correct bit field size also if it is one bit wide
- Bounds() function fixed
- ELSEIFN and ELSEWHILEN now works
- modulo (a\b) now works correctly in all cases
- lists in lists are now handled correctly
- backslash ('\') in strings now works
- CASE xxx TO yyy works again
- multi-dimensional arrays (x[i,j,k]) now works
- multi-level pointers (x[i][j][k]) now works
- x[] is now correctly x[0]
- and more... [and probably some new added :P]
- added ALIGN keyword to allow better alignment of object items
- REPROC feature changed and improved
- improved local variables, now allows also local static variables (SDEF)
- added ASMPPC/ENDASM for ppc routines in 68k code.
- improved function reading, You are now allowed to use code like here:
- x().a:=1, where x() is a function that returns a pointer to object,
which contains an item called a.
- x()[3]:=2, where x() is a function, that returns a pointer to a list.
- Version 0.15 (8.5.2000)(dc.e: 14387 lines, 453366 bytes):
- added localization support (currently very limited, czech only)
- maximal length of single string expanded from 256 characters to 1024 characters
- improved preprocessor (thanx to Miklos Nemeth for bug-reports)
- added #include,#undefine, #* (where * is a number) keywords
- added DEBUG macro when DEBUGSYM option active
- preprocessor now removes comments => faster Reading pass
- high speedup - much more eficient macro reading
- removed many and many bugs and enforcer hits
- improved object reading:
- new member separator "/" for multiple members with same type
- stack lists changed to static lists, like in AmigaE => faster (in some cases shorter)
- also constant-only equations are now recognized => shorter code
- inline assembler (ASM) now works much better
- again added dmod - powerd binary module viewer
- added New() and Free() functions
- You are now able to use SELECT <const>;CASE func() etc.
- removed bugs in:
- string optimizations
- function calling
- inline lists
- powerd.lib, some functions rewritten to be faster and/or shorter
- global lists now works also with non objects
- heavy bug in SELECT with arrays
- and many other
- as You can see, documentation in HTML :)
- This is highly undone, I'm heavily working on it, but currently not
all parts are rewritten. Thanks to Richard Korber for his great
GuideML V1.5 converter.
- Version 0.14 (2.4.2000)(dc.e: 13185 lines, 409393 bytes):
- removed FPU OPTion/argument
- improved CPU/MACHINE OPTion/argument
- improved #?.o/#?.lib file recognition, no more fpu/ieee problems
- in 0.13: macros couldn't be used
- removed small bug in constants in binary modules
- preprocessor is now completely global => new PreProcessong pass added
- removed bug in constant conversion (eg: DEFD q=10 had to be used as DEFD q=10.0 before)
- removed also other bugs and some enforcer hits
- Version 0.13 (5.3.2000)(dc.e: 12688 lines, 395821 bytes):
- added REPROC/DREPROC feature
- added RAISE feature
- Raise() moved to powerd.lib
- improved retyping
- removed many bugs
- unsigned word and unsigned byte storing
- Generating pass renamed to Reading pass :)
- nearly all types changed, so old binary modules won't work, use new or ascii :(
- improved multi-dimensional arrays and pointers
- added generated assembler source description in this document. (highly undone)
- swap (:=:) can be now used also for different types
- whole asm-writer has been rewritten, now allows much faster and better optimizations
- many new optimizations (currently are all optimizations always on)
- about 100 kB of code rewritten
- added some new functions to powerd.lib:
- DupStr(), DupEStr(), NewStr(), RemStr(), DupStrPooled(), DupEStrPooled(), NewEStrPooled(), RemStrPooled(), RemEStrPooled(), NewStrPooled()
- in many cases improved register handling
- improved finding routines (it can now find what it couldn't find before :)
- it should never more try to find on illegal addressed, now about 40% faster!
- object oriented programming should now work better
- if two or more same arguments/variables, an error appear
- return values preset to zeros, so not su much dull messages :) (but still some)
- changed string and list order, now it has same order as in dsource
- renumbered errors
- nonfpu floats are currently not completed, complete version will be released asap!
- also powerd_ieee.lib not completed, sorry
- about 40 kB shorter !!!
- dmod not included, I had not enough time to complete it, sorry
- Version 0.12 (4.2.2000)(dc.e: 12345 lines, 396396 bytes):
- removed bug in optimizations
- removed some bugs in docs :)
- powerd.lib functions added into index of this document
- some new things added into index
- added few new functions (intuition, graphics, pools):
- OpenW(), CloseW(), OpenS(), CloseS(), SetStdRast()
- Plot(), Line(), Box(), Circle(), Ellipse(), Colour(), SetColour()
- AllocVecPooled(), FreeVecPooled(), SizePooled()
- removed some bugs in binary modules
- saved binary modules has now slightly different format
- added EDEFs and #defines
- added dmod tool, to show binary modules
- improved macros, now You can use #ifdef, #ifndef, #else and #endif
- proprocessor can from now convert: xxx:=.yyy to xxx:=xxx.yyy
- this slightly slowed down generate pass, because preprocessor is now called always
- I rewrote many functions to don't use stack, but registers = shorter and faster from powerd.lib
- Even() and Odd() flipped :)
- local e-strings now works again
- improved asm string writer, now You can use eg: '\0\0\0\0', to allocate 4 bytes long string of zeros
- main code reader routine is rewritten to be faster
- added Syntax Error (sorry :)
- I finally added description of some errors in this document, very incomplete
- this error currently quits powerd
- added many new string extensions
- removed some enforcer hits
- Version 0.11 (17.1.2000)(dc.e: 11066 lines, 361271 bytes):
- added ¸ (ascii 184) decimal number separator
- improved LOOP x where x can be now constant/number
- added binary module support (still very limited)
- improved procedure/function finding routines, up to 28 times faster
- added few new functions:
- UByte(), UWord(), ULong(), HiBit(), LoHit(), BitCount(),BitSize()
- improved startup files, arg variable now work
- added startup_dosarg.m module and DOSARGONLY OPTion to allow arg variable with dos opening only
- inlined IF now work better
- added one new example
- no more linker error like line too long or similar
- removed some bugs in modules and added ExecBase variable
- removed some other bugs
Older history